using B.S.Medical.Domain.Entity;
using System;

namespace B.S.Medical.Domain.Payment
{
    /// <summary>
    /// 支付流水/支付日志
    /// </summary>
    public class PaymentRecordModel : BaseEntity
    {
        /// <summary>
        /// 患者ID
        /// </summary>
        public int PatientId { get; set; }

        /// <summary>
        /// 医生ID
        /// </summary>
        public int DoctorId { get; set; }

        /// <summary>
        /// 项目名称（如：西药费、检验费、检查费等）
        /// </summary>
        public string ItemName { get; set; }

        /// <summary>
        /// 金额
        /// </summary>
        public decimal Amount { get; set; }

        /// <summary>
        /// 是否已支付
        /// </summary>
        public bool IsPaid { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedTime { get; set; }

        /// <summary>
        /// 业务订单号
        /// </summary>
        public string OrderNo { get; set; }
        
        /// <summary>
        /// 支付宝交易号
        /// </summary>
        public string? PayTradeNo { get; set; }
        
        /// <summary>
        /// 支付方式
        /// </summary>
        public string? PayType { get; set; }
        
        /// <summary>
        /// 支付状态
        /// </summary>
        public string? PayStatus { get; set; }
        
        /// <summary>
        /// 支付金额
        /// </summary>
        public decimal PayAmount { get; set; }
        
        /// <summary>
        /// 退款金额
        /// </summary>
        public decimal? RefundAmount { get; set; }
        
        /// <summary>
        /// 支付宝退款单号
        /// </summary>
        public string? RefundTradeNo { get; set; }
        
        /// <summary>
        /// 退款状态
        /// </summary>
        public string? RefundStatus { get; set; }
        
        /// <summary>
        /// 支付完成时间
        /// </summary>
        public DateTime? PayTime { get; set; }
        
        /// <summary>
        /// 退款完成时间
        /// </summary>
        public DateTime? RefundTime { get; set; }
        
        /// <summary>
        /// 支付渠道
        /// </summary>
        public string? PayChannel { get; set; }
        
        /// <summary>
        /// 回调原始内容
        /// </summary>
        public string? NotifyRaw { get; set; }
        
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreateTime { get; set; }
        
        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime UpdateTime { get; set; }
    }
} 